package com.zxl.designpattern.structure.composite;


/**
 * @author zxl
 * @version 1.0
 * @description 组合模式-测试类
 *  这是标准的组件模式（透明模式）。
 *  透明模式的好处是所有的叶子节点和树枝节点对外界没有区别，
 *  如果是安全模式的化，接口不定义方法，而是起一个标识的作用，具体实现叶子和树枝节点需要自己定义。
 * @date 2025/6/1 14:22
 */
public class Test {
    public static void main(String[] args) {
        // 创建员工
        OrganizationComponent ceo = new Employee("张三", "首席执行官");
        OrganizationComponent cto = new Employee("李四", "技术总监");
        OrganizationComponent hrManager = new Employee("王五", "人力资源经理");

        // 创建开发部
        Department development = new Department("开发部");
        development.addMember(new Employee("赵六", "高级工程师"));
        development.addMember(new Employee("钱七", "初级工程师"));
        development.addMember(new Employee("孙八", "测试工程师"));

        // 创建人力资源部
        Department hr = new Department("人力资源部");
        hr.addMember(hrManager);
        hr.addMember(new Employee("周九", "招聘专员"));
        hr.addMember(new Employee("吴十", "培训专员"));

        // 创建技术部(包含开发部)
        Department technology = new Department("技术部");
        technology.addMember(cto);
        technology.addMember(development);

        // 创建公司(包含技术部和人力资源部)
        Department company = new Department("总公司");
        company.addMember(ceo);
        company.addMember(technology);
        company.addMember(hr);

        // 显示公司组织架构
        company.displayInfo();

    }
}    